<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    概述：Promise是异步编程的一种解决方案，Promise是一个对象，可以获取异步操作的消息
    
    目的: 1、避免回调地狱的问题
          2、Promise对象提供了简洁的API，使得控制异步操作更加容易 
          3、避免了层层嵌套的回调函数
    缺点: 
          1、无法取消promise 
          2、当处于pending状态时，无法得知目前进展到哪一个阶段
    
    Promise有三种状态：
          1、padding   //正在请求
          2、reject    //失败
          3、resolve   //成功
    
    基础用法：new Promise(function(resolve,reject){ })

    resolved,rejected函数：
          在异步事件状态pendding->resolved回调成功时，通过调用resolved函数返回结果；
          当异步操作失败时，回调用rejected函数显示错误信息

    then的用法：
          then中传了两个参数，
          第一个对应resolve的回调，
          第二个对应reject的回调
    
    catch方法：
          捕捉promise错误函数，和then函数参数中rejected作用一样，处理错误
          由于Promise抛出错误具有冒泡性质，能够不断传递，会传到catch中，所以一般来说所有错误处理放在catch中，then中只处理成功的，同时catch还会捕捉resolved中抛出的异常

    promise的构造函数是同步执行，then方法是异步执行，
    promise是微任务，settimeout是宏任务，
    promsie.then总是先与setTimeout执行
</body>

</html>